package com.gxc.dbcore.service;

import java.util.List;
import java.util.Map;

import com.gxc.dbcore.dao.SqlDao;
import com.gxc.dbcore.util.CompareItem;
import com.gxc.dbcore.util.EntityDef;
import com.gxc.dbcore.util.PageInfo;
import com.gxc.dbcore.util.PageList;

public interface BeanMapService {

	/**
	 * 获取一条记录
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param idValue
	 * @return
	 */
	@SuppressWarnings({ "rawtypes" })
	public Map get(SqlDao sqlDao, EntityDef entityDef, Object idValue);

	/**
	 * 新建一条记录
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param map
	 * @return
	 */
	@SuppressWarnings({ "rawtypes" })
	public int create(SqlDao sqlDao, EntityDef entityDef, Map map);

	/**
	 * 更新一条记录
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param map
	 * @return
	 */
	@SuppressWarnings({ "rawtypes" })
	public int update(SqlDao sqlDao, EntityDef entityDef, Map map);

	/**
	 * 删除一条记录
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param idValue
	 * @return
	 */
	public int delete(SqlDao sqlDao, EntityDef entityDef, Object idValue);

	/**
	 * 删除多条记录
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param idValueArray
	 * @return
	 */
	public int delete(SqlDao sqlDao, EntityDef entityDef, Object[] idValueArray);

	/**
	 * 获取符合条件的记录数
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param conditionList
	 * @return
	 */
	public Long count(SqlDao sqlDao, EntityDef entityDef,
			List<CompareItem> conditionList);

	/**
	 * 获取符合条件的记录
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param conditionList
	 * @param fieldSort
	 * @return
	 */
	@SuppressWarnings({ "rawtypes" })
	public List list(SqlDao sqlDao, EntityDef entityDef,
			List<CompareItem> conditionList, String fieldSort);

	/**
	 * 获取符合条件的记录（分页）
	 * 
	 * @param sqlDao
	 * @param entityDef
	 * @param conditionList
	 * @param fieldSort
	 * @param pageInfo
	 * @return
	 */
	public PageList listPage(SqlDao sqlDao, EntityDef entityDef,
			List<CompareItem> conditionList, String fieldSort, PageInfo pageInfo);
}
